Crime events v.s. Time
Number of cirime events each month
sub_crime_month =
raw_sub_crime %>%
filter(start_date > "2021-01-01") %>%
select(start_date, start_time, crime_event, law_cat) %>%
mutate(start_date = substring(start_date, 1, 7))
plot_1 =
sub_crime_month %>%
group_by(start_date) %>%
summarise(event_num = n()) %>%
plot_ly(
x = ~start_date, y = ~event_num, type = "bar"
)
layout(plot_1, title = "Crime events over month", xaxis = list(title = "Month"), yaxis = list(title = "Number of Crime Events"))
Number of crime events each week
sub_crime_week =
raw_sub_crime %>%
select(start_date, start_time, crime_event, law_cat) %>%
mutate(week = cut.Date(start_date, breaks = "1 week", labels = FALSE)) %>%
arrange(week) %>%
group_by(week) %>%
summarise(event_num = n())
plot_2 =
sub_crime_week %>%
plot_ly(
x = ~week, y = ~event_num, type = "scatter", mode = "marker"
)
layout(plot_2, title = "Crime events over weeks", xaxis = list(title = "Week"), yaxis = list(title = "Number of Crime Events"))
Top 5 crime events v.s. Occurrence time
crime_occ_time =
raw_sub_crime %>%
mutate(event_time = ordered(event_time, levels = c("2 AM","6 AM","10 AM","2 PM","6 PM","10 PM"))) %>%
filter(crime_event %in% c("criminal mischief & related of","assault 3 & related offenses","harrassment 2","grand larceny","dangerous drugs"))
plot_3 =
crime_occ_time %>%
ggplot(aes(x = event_time, fill = crime_event)) +
geom_histogram(stat = "count", width = 0.9, height = 2) +
labs(
title = "Frequency of crime events v.s. Time points",
x = "Occurrence time",
y = "Frequency of crime events") +
theme_bw() +
theme(
plot.title = element_text(hjust = 1),
legend.position = "bottom",
legend.text = element_text(size = 8)) +
guides(col = guide_legend(nrow = 2))
ggplotly(plot_3) %>%
layout(legend = list(
orientation = "h",
xanchor = "center",
yanchor = "top",
x = 0.3,
y = - 0.3
)
)
Degrees of crime event
sub_crime_degree =
raw_sub_crime %>%
filter(crime_event %in% c("criminal mischief & related of","assault 3 & related offenses","harrassment 2","grand larceny","dangerous drugs","felony assault", "robbery", "petit larceny", "forgery", "sex crimes")) %>%
count(crime_event, law_cat)
plot_4 =
sub_crime_degree %>%
plot_ly(
x = ~crime_event, y = ~n, color = ~law_cat, type = "bar"
)
layout(plot_4, title = "Crime Events Numbers each degree", xaxis = list(title = "Crime events"), yaxis = list(title = "Number of Crime Events"))
Proceeding time
crime_prcd_time =
raw_sub_crime %>%
drop_na(start_time, end_time) %>%
mutate(prcd_time = difftime(end, start, units = "mins")) %>%
filter(prcd_time < 35) %>%
filter(prcd_time != 0) %>%
mutate(quarters = quarters(as.Date(start_date)))
plot_5 =
crime_prcd_time %>%
plot_ly(y = ~ prcd_time, color = ~ law_cat, type = "box")
layout(plot_5, title = "Crime type", xaxis = list(title = "Proceeding time"), yaxis = list(title = "Crime type v.s. Proceeding time (mins)")
)
Day of week v.s. Occurrence time
sub_crime_dow =
raw_sub_crime %>%
mutate(day_of_week = wday(as.Date(start_date), label=TRUE, abbr = FALSE)) %>%
mutate(day_of_week = fct_relevel(day_of_week, "Saturday", "Friday", "Thursday", "Wednesday", "Tuesday", "Monday", "Sunday")) %>%
separate(start_time, into = c("hour", "minute", "second"), sep = ":") %>%
select(day_of_week, hour, crime_event) %>%
group_by(day_of_week, hour) %>%
summarise(crime_num = n())
plot_6 =
sub_crime_dow %>%
plot_ly(
x = ~ hour, y = ~ day_of_week, z = ~ crime_num, type = "heatmap", colors = "BuPu"
) %>%
colorbar(title = "Events Number", x = 1.1, y = 0.8)
layout(plot_6, title = "Crime frequency: Day v.s. Hour", xaxis = list(title = "Hour"), yaxis = list(title = "Day of week")
)